package RapiWeb;

import RapiWeb.Objeto.Proyecto;
import Utilidades.Archivo;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

/**
 * @author Luis Antonio Lara Capetillo Fecha: 14/08/12 Descripcion: clase
 * encargada de mostrar la ventana para crear un Nuevo Proyecto con los
 * estandares elegidos
 * @version 1.0
 */
public class JP_NuevoProyecto extends JPanel {

    private Proyecto proyecto;
    private JComboBox cbx_Lenguaje;
    private JComboBox cbx_Gestor;
    private JTextField txt_NomProyecto;
    private JTextField txt_Autor;
    //prefijos para Clases
    private JTextField txt_ClasePresentacion;
    private JTextField txt_ClaseNegocio;
    private JTextField txt_ClaseDatos;
    private JTextField txt_Componentes;
    private JTextField txt_Property;
    private JTextField txt_Funciones;
    private JTextField txt_Eventos;
    private JTextField txt_Exception;
    //prefijos para datos de clases
    private JTextField txt_VarGeneral;
    private JTextField txt_VarEntero;
    private JTextField txt_VarString;
    private JTextField txt_VarDouble;
    private JTextField txt_VarFloat;
    private JTextField txt_VarFecha;
    //prefijos para componentes de clases
    private JTextField txt_Label;
    private JTextField txt_Button;
    private JTextField txt_TextField;
    private JTextField txt_ComboBox;
    private JTextField txt_CheckBox;
    private JTextField txt_GridView;
    private JTextField txt_ListBox;
    //prefijos para Base de Datos
    private JTextField txt_FuncionSQL;
    private JTextField txt_ProcedimientoSQL;
    private JTextField txt_CursorSQL;
    private JTextField txt_VariableSQL;
    private JTextField txt_ParametrosSQL;
    private JTextField txt_RegistroSQL;
    private JTextField txt_ConstanteSQL;
    private JTextField txt_ExceptionSQL;
    private JTextField txt_PaqueteSQL;
    private Font letra = new Font("Arial", 2, 14);
    private JF_Principal principal;
    private int int_tamaño = 5;

    public JP_NuevoProyecto(JF_Principal principal) {
        this.principal = principal;
        setLayout(new BorderLayout());
        addComponenetes();
        setSize(300, 400);
//        m_CentrarVentana();
        setVisible(true);
    }

    private void m_CentrarVentana() {
        int alto = principal.getHeight() - getHeight();
        int ancho = principal.getWidth() - getWidth();
        int x = principal.getX() + (ancho / 2);
        int y = principal.getY() + (alto / 2);
        this.setLocation(x, y);
    }

    private void addComponenetes() {
        JPanel p_Principal= new JPanel();
        p_Principal.setLayout(new BorderLayout());
        JScrollPane sp_Oeste = new JScrollPane(m_PanelClases());
        JScrollPane sp_Centro = new JScrollPane(m_PanelVariables());
        JScrollPane sp_Este = new JScrollPane(m_PanelSQL());
        p_Principal.add(m_PanelNombre(), "North");
        p_Principal.add(sp_Oeste, "West");
        p_Principal.add(sp_Centro, "Center");
        p_Principal.add(sp_Este, "East");
        add(p_Principal,"West");
    }

    /**
     * Metodo para crear el panel datos del proyecto
     *
     * @return panel
     */
    private JPanel m_PanelNombre() {
        JPanel panel = new JPanel(new BorderLayout());
        JLabel lbl_NomProyecto = new JLabel("Proyecto ");
        JLabel lbl_Autor = new JLabel("Autor ");
        JLabel lbl_Lenguaje = new JLabel("Lenguaje ");
        JLabel lbl_Gestor = new JLabel("Gestor BD ");

        JPanel p_Norte = new JPanel();
        JPanel p_Norte1 = new JPanel();
        JPanel p_Norte2 = new JPanel();
        p_Norte.setLayout(new BorderLayout());
        p_Norte1.setLayout(new GridLayout(4, 1));
        p_Norte2.setLayout(new GridLayout(4, 1));

        txt_Autor = new JTextField(20);
        txt_NomProyecto = new JTextField(20);
        cbx_Lenguaje = new JComboBox(new String[]{"VB", "CS", "Java"});
        cbx_Gestor = new JComboBox(new String[]{"SQLServer", "Oracle", "MySQL"});

        p_Norte1.add(lbl_NomProyecto);
        p_Norte2.add(txt_NomProyecto);
        p_Norte1.add(lbl_Autor);
        p_Norte2.add(txt_Autor);
        p_Norte1.add(lbl_Lenguaje);
        p_Norte2.add(cbx_Lenguaje);
        p_Norte1.add(lbl_Gestor);
        p_Norte2.add(cbx_Gestor);
        p_Norte.add(p_Norte1, "West");
        p_Norte.add(p_Norte2, "East");

        panel.add(p_Norte, "West");
        return panel;
    }

    private JPanel m_PanelClases() {
        JPanel panel = new JPanel(new BorderLayout());
        JPanel p_Auxiliar = new JPanel(new BorderLayout());
        JPanel p_Oeste = new JPanel();
        JPanel p_Este = new JPanel();
        p_Oeste.setLayout(new GridLayout(18, 1));
        p_Este.setLayout(new GridLayout(18, 1));

        JLabel lbl_Titulo1 = new JLabel("Prefijos Clases");
        lbl_Titulo1.setFont(letra);
        lbl_Titulo1.setForeground(Color.blue);

        JLabel lbl_ClasePresentacion = new JLabel("Clase Presentación");
        JLabel lbl_ClaseNegocio = new JLabel("Clase Negocios");
        JLabel lbl_ClaseDatos = new JLabel("Clase Datos");
        JLabel lbl_Componentes = new JLabel("Componentes");
        JLabel lbl_Property = new JLabel("Property");
        JLabel lbl_Funciones = new JLabel("Funciones");
        JLabel lbl_Eventos = new JLabel("Eventos");
        JLabel lbl_Excepciones = new JLabel("Excepciones");



        txt_ClasePresentacion = new JTextField(" ", int_tamaño);
        txt_ClaseNegocio = new JTextField(" ", int_tamaño);
        txt_ClaseDatos = new JTextField(" ", int_tamaño);
        txt_Componentes = new JTextField(" ", int_tamaño);
        txt_Property = new JTextField(" ", int_tamaño);
        txt_Funciones = new JTextField(" ", int_tamaño);
        txt_Eventos = new JTextField(" ", int_tamaño);
        txt_Exception = new JTextField(" ", int_tamaño);

        p_Oeste.add(lbl_Titulo1);
        p_Oeste.add(lbl_ClasePresentacion);
        p_Oeste.add(lbl_ClaseNegocio);
        p_Oeste.add(lbl_ClaseDatos);
        p_Oeste.add(lbl_Componentes);
        p_Oeste.add(lbl_Property);
        p_Oeste.add(lbl_Funciones);
        p_Oeste.add(lbl_Eventos);
        p_Oeste.add(lbl_Excepciones);

        p_Este.add(new JLabel());
        p_Este.add(txt_ClasePresentacion);
        p_Este.add(txt_ClaseNegocio);
        p_Este.add(txt_ClaseDatos);
        p_Este.add(txt_Componentes);
        p_Este.add(txt_Property);
        p_Este.add(txt_Funciones);
        p_Este.add(txt_Eventos);
        p_Este.add(txt_Exception);

        p_Auxiliar.add(p_Oeste, "West");
        p_Auxiliar.add(p_Este, "East");
        panel.add(p_Auxiliar, "North");

        return panel;
    }

    private JPanel m_PanelVariables() {
        JPanel panel = new JPanel(new BorderLayout());
        JPanel p_Auxiliar = new JPanel(new BorderLayout());
        JPanel p_Oeste = new JPanel();
        JPanel p_Este = new JPanel();
        p_Oeste.setLayout(new GridLayout(18, 1));
        p_Este.setLayout(new GridLayout(18, 1));

        JLabel lbl_Titulo2 = new JLabel("Prefijos Variables");
        lbl_Titulo2.setFont(letra);
        lbl_Titulo2.setForeground(Color.blue);

        JLabel lbl_VarGeneral = new JLabel("General");
        JLabel lbl_VarEntero = new JLabel("Tipo Entero");
        JLabel lbl_VarString = new JLabel("Tipo String");
        JLabel lbl_VarDouble = new JLabel("Tipo Double");
        JLabel lbl_VarFloat = new JLabel("Tipo Float");
        JLabel lbl_VarFecha = new JLabel("Tipo Fecha");
        JLabel lbl_VarLabel = new JLabel("Label");
        JLabel lbl_VarBoton = new JLabel("Button");
        JLabel lbl_VarTextField = new JLabel("TextField");
        JLabel lbl_ComboBox = new JLabel("ComboBox");
        JLabel lbl_CheckBox = new JLabel("CheckBox");
        JLabel lbl_GridView = new JLabel("GridView");
        JLabel lbl_ListBox = new JLabel("ListBox");
        txt_VarGeneral = new JTextField(" ", int_tamaño);
        txt_VarEntero = new JTextField(" ", int_tamaño);
        txt_VarString = new JTextField(" ", int_tamaño);
        txt_VarDouble = new JTextField(" ", int_tamaño);
        txt_VarFloat = new JTextField(" ", int_tamaño);
        txt_VarFecha = new JTextField(" ", int_tamaño);
        txt_Label = new JTextField(" ", int_tamaño);
        txt_Button = new JTextField(" ", int_tamaño);
        txt_TextField = new JTextField(" ", int_tamaño);
        txt_ComboBox = new JTextField(" ", int_tamaño);
        txt_CheckBox = new JTextField(" ", int_tamaño);
        txt_GridView = new JTextField(" ", int_tamaño);
        txt_ListBox = new JTextField(" ", int_tamaño);

        p_Oeste.add(lbl_Titulo2);
        p_Oeste.add(lbl_VarGeneral);
        p_Oeste.add(lbl_VarEntero);
        p_Oeste.add(lbl_VarString);
        p_Oeste.add(lbl_VarDouble);
        p_Oeste.add(lbl_VarFloat);
        p_Oeste.add(lbl_VarFecha);
        p_Oeste.add(lbl_VarLabel);
        p_Oeste.add(lbl_VarBoton);
        p_Oeste.add(lbl_VarTextField);
        p_Oeste.add(lbl_ComboBox);
        p_Oeste.add(lbl_CheckBox);
        p_Oeste.add(lbl_GridView);
        p_Oeste.add(lbl_ListBox);

        p_Este.add(new JLabel());
        p_Este.add(txt_VarGeneral);
        p_Este.add(txt_VarEntero);
        p_Este.add(txt_VarString);
        p_Este.add(txt_VarDouble);
        p_Este.add(txt_VarFloat);
        p_Este.add(txt_VarFecha);
        p_Este.add(txt_Label);
        p_Este.add(txt_Button);
        p_Este.add(txt_TextField);
        p_Este.add(txt_ComboBox);
        p_Este.add(txt_CheckBox);
        p_Este.add(txt_GridView);
        p_Este.add(txt_ListBox);

        p_Auxiliar.add(p_Oeste, "West");
        p_Auxiliar.add(p_Este, "East");
        panel.add(p_Auxiliar, "North");

        return panel;
    }

    private JPanel m_PanelSQL() {
        JPanel panel = new JPanel(new BorderLayout());
        JPanel p_Auxiliar = new JPanel(new BorderLayout());
        JPanel p_Oeste = new JPanel();
        JPanel p_Este = new JPanel();
        p_Oeste.setLayout(new GridLayout(18, 1));
        p_Este.setLayout(new GridLayout(18, 1));

        JLabel lbl_Titulo3 = new JLabel("Prefijos SQL");
        lbl_Titulo3.setFont(letra);
        lbl_Titulo3.setForeground(Color.blue);

        JLabel lbl_FuncionSQL = new JLabel("Funciones");
        JLabel lbl_ProcedimientoSQL = new JLabel("Procedimientos");
        JLabel lbl_CursorSQL = new JLabel("Cursor");
        JLabel lbl_VariableSQL = new JLabel("Variables");
        JLabel lbl_ParametrosSQL = new JLabel("Parametros");
        JLabel lbl_RegistroSQL = new JLabel("Registros");
        JLabel lbl_ConstanteSQL = new JLabel("Constantes");
        JLabel lbl_ExceptionSQL = new JLabel("Exceptiones");
        JLabel lbl_PaqueteSQL = new JLabel("Paquetes");
        txt_ConstanteSQL = new JTextField(" ", int_tamaño);
        txt_CursorSQL = new JTextField(" ", int_tamaño);
        txt_ExceptionSQL = new JTextField(" ", int_tamaño);
        txt_PaqueteSQL = new JTextField(" ", int_tamaño);
        txt_FuncionSQL = new JTextField(" ", int_tamaño);
        txt_ProcedimientoSQL = new JTextField(" ", int_tamaño);
        txt_RegistroSQL = new JTextField(" ", int_tamaño);
        txt_VariableSQL = new JTextField(" ", int_tamaño);
        txt_ParametrosSQL = new JTextField(" ", int_tamaño);


        p_Oeste.add(lbl_Titulo3);
        p_Oeste.add(lbl_FuncionSQL);
        p_Oeste.add(lbl_ProcedimientoSQL);
        p_Oeste.add(lbl_CursorSQL);
        p_Oeste.add(lbl_VariableSQL);
        p_Oeste.add(lbl_ParametrosSQL);
        p_Oeste.add(lbl_RegistroSQL);
        p_Oeste.add(lbl_ConstanteSQL);
        p_Oeste.add(lbl_ExceptionSQL);
        p_Oeste.add(lbl_PaqueteSQL);

        p_Este.add(new JLabel());
        p_Este.add(txt_FuncionSQL);
        p_Este.add(txt_ProcedimientoSQL);
        p_Este.add(txt_CursorSQL);
        p_Este.add(txt_VariableSQL);
        p_Este.add(txt_ParametrosSQL);
        p_Este.add(txt_RegistroSQL);
        p_Este.add(txt_ConstanteSQL);
        p_Este.add(txt_ExceptionSQL);
        p_Este.add(txt_PaqueteSQL);

        p_Auxiliar.add(p_Oeste, "West");
        p_Auxiliar.add(p_Este, "East");
        panel.add(p_Auxiliar, "North");

        return panel;
    }

    public void m_Guardar() {
        Archivo archi = new Archivo();
        try {
            archi.m_CrearCarpeta(txt_NomProyecto.getText());
            archi.m_CrearCarpeta(txt_NomProyecto.getText() + "/MasterPage");
            archi.m_CrearCarpeta(txt_NomProyecto.getText() + "/Tablas");
            archi.m_CrearCarpeta(txt_NomProyecto.getText() + "/Controles");
            archi.m_CrearCarpeta(txt_NomProyecto.getText() + "/Codigo");
            archi.m_CrearCarpeta(txt_NomProyecto.getText() + "/Documentacion");


            String str_NomArchivo;
            str_NomArchivo = txt_NomProyecto.getText() + "/" + txt_NomProyecto.getText() + ".txt";
            archi.m_CrearArchivo(str_NomArchivo);
            proyecto = new Proyecto();
            proyecto.setStr_NomProyecto(txt_NomProyecto.getText());
            proyecto.setStr_Autor(txt_Autor.getText());
            proyecto.setStr_Lenguaje(cbx_Lenguaje.getItemAt(cbx_Lenguaje.getSelectedIndex()).toString());
            proyecto.setStr_Gestor(cbx_Gestor.getItemAt(cbx_Gestor.getSelectedIndex()).toString());
            proyecto.setStr_ClasePresentacion(txt_ClasePresentacion.getText());
            proyecto.setStr_ClaseNegocio(txt_ClaseNegocio.getText());
            proyecto.setStr_ClaseDatos(txt_ClaseDatos.getText());
            proyecto.setStr_Componentes(txt_Componentes.getText());
            proyecto.setStr_Property(txt_Property.getText());
            proyecto.setStr_Funciones(txt_Funciones.getText());
            proyecto.setStr_Eventos(txt_Eventos.getText());
            proyecto.setStr_Exception(txt_Exception.getText());
            proyecto.setStr_VarGeneral(txt_VarGeneral.getText());
            proyecto.setStr_VarEntero(txt_VarEntero.getText());
            proyecto.setStr_VarString(txt_VarString.getText());
            proyecto.setStr_VarDouble(txt_VarDouble.getText());
            proyecto.setStr_VarFloat(txt_VarFloat.getText());
            proyecto.setStr_VarFecha(txt_VarFecha.getText());
            proyecto.setStr_Label(txt_Label.getText());
            proyecto.setStr_Button(txt_Button.getText());
            proyecto.setStr_TextField(txt_TextField.getText());
            proyecto.setStr_ComboBox(txt_ComboBox.getText());
            proyecto.setStr_CheckBox(txt_CheckBox.getText());
            proyecto.setStr_GridView(txt_GridView.getText());
            proyecto.setStr_ListBox(txt_ListBox.getText());
            proyecto.setStr_FuncionSQL(txt_FuncionSQL.getText());
            proyecto.setStr_ProcedimientoSQL(txt_ProcedimientoSQL.getText());
            proyecto.setStr_CursorSQL(txt_CursorSQL.getText());
            proyecto.setStr_VariableSQL(txt_VariableSQL.getText());
            proyecto.setStr_ParametrosSQL(txt_ParametrosSQL.getText());
            proyecto.setStr_RegistroSQL(txt_RegistroSQL.getText());
            proyecto.setStr_ConstanteSQL(txt_ConstanteSQL.getText());
            proyecto.setStr_ExceptionSQL(txt_ExceptionSQL.getText());
            proyecto.setStr_Paquete(txt_PaqueteSQL.getText());

            String str_Datos;
            str_Datos = proyecto.m_DatosProyecto();
            archi.m_SobreEscribir(str_NomArchivo, str_Datos);
            principal.setVisible(false);
            JF_Principal f_Nuevo = new JF_Principal();
            f_Nuevo.m_AsignarProyecto(str_NomArchivo);
            f_Nuevo.getContentPane().setBackground(Color.white);
            JOptionPane.showMessageDialog(null, "Proyecto " + f_Nuevo.getStr_NomProyecto() + " creado");
        } catch (Exception ex) {
            JOptionPane.showConfirmDialog(null, "Excepcion al guardar el proyecto: " + ex.getMessage());
        }
    }
}
